#ifndef FILEWATCH_H
#define FILEWATCH_H

#include <QFileInfoList>
#include <QObject>


QT_BEGIN_NAMESPACE
class QFileSystemWatcher;
QT_END_NAMESPACE


class FileWatch : public QObject
{
    Q_OBJECT

public:

    enum FileState{

        addFiles,
        delFiles,
        renameFiles

    };

    explicit FileWatch(const QString filePath,QObject *parent = nullptr);

    QStringList getFileList();


signals:
      void sigFileChange(const QStringList filePathList, FileState flag);

private slots:

    //文件的删除 重命名 修改（主要）
    void sltFileChanged(const QString &path);

    //文件的添加删除 重命名
    void sltDirectoryChanged(const QString &path);

private:

    const QString m_FilePath;

    void initWatch();

    //  当前目录下的文件List
    QStringList getFilesFromPath(const QString filePath);

    //根据历史文件判断文件是否新增 删除 重命名（没测试过批量重命名）
    void checkFileIsRename(QFileInfoList &fileHistory);


    QFileInfoList m_watchFilesInfoHistory;

    QStringList m_fileFilter;

    QFileSystemWatcher *m_pWatch;
};

#endif // FILEWATCH_H
